Skip to content

Conversation

@Buffik
Copy link
Owner

@Buffik Buffik commented Mar 25, 2023

Deploy: https://rs-crm-sales.netlify.app/

Для авторизации можно использовать:

  • логин b@gmail.com (Руководитель);
  • логин d@gmail.com (Продавец);
  • логины других пользователей, которых вы увидите, зайдя под профилем руководителя;
  • логины пользователей, которых вы создадите, зайдя под профилем руководителя.
    У существующих пользователей пароли 123321123, просим их не менять.

CRM-Sales

CRM-Sales - это инструмент для управления и контроля рабочего процесса внутри небольшой компании, занимающейся продажами товаров и услуг. Он помогает планировать и управлять продажами и коммуникацией с лидами и клиентами.

Работа выполнена в команде из трех человек:
Владимир @Buffik - teamlead, frontend developer
Динара @dinara-n frontend & backend developer. (Репозиторий с бэком)
Олег @olegpl1993 frontend developer

Разработка велась по Kanban системе, в качестве основного инструмента использовалась Miro.

Используемые библиотеки

Фронтенд:

React
Redux Toolkit
Redux AsyncThunk
Axios
MaterialUI
Sass

Бэкенд:

Express.JS
MongoDB
Mongoose
bcryptjs
cookie-parser
cors
express-validator
jsonwebtoken

Основной функционал приложения

Для реализации управления внутренних бизнес-процессов компании были созданы три основные сущности:

  • Продавец (работник компании на должности специалиста по работе с клиентами)
  • Руководитель
  • Администратор
    В зависимости от текущей роли авторизованного пользователя доступный функционал будет отличаться.
    Администратор и Руководитель могут создавать новых Продавцов и Руководителей, а также удалять их и восстанавливать. Пользователь не имеет доступа к вкладке с управлением пользователями "Сотрудники / Employees"

В качестве инструментов для работы используется три вида данных:

  • Клиенты. Это сторонние компании, с которыми сотрудники ведут деловые отношения. За каждым клиентом должен быть закреплен свой специалист по работе с клиентами и / или руководитель (данный функционал реализован на странице "Клиенты / Clients" и доступен пользователям с ролями Администратор и Руководитель).

    • Клиент содержит в себе следующие поля:
      • Наименование (обязательное поле)
      • e-mail (необязательное поле)
      • телефон (обязательное поле)
      • ИНН (обязательное поле)
      • адрес (необязательное поле)
      • привязка активного сотрудника (только для Администратора и Руководителя)
    • Доступные действия с клиентами:
      • Создание (могут все пользователи)
      • Привязка Продавца к компании: если компанию создает пользователь с правами Продавца, то он привязывается к созданной компании автоматически, если компанию создает пользователь с правами Администратора и Руководителя, то ему доступно поле с множественным выбором возможных активных Продавцов.
      • Редактирование: Продавцу доступны для редактирования компании, привязанные именно к нему, Администратор и Руководитель видят все созданные компании, имеют возможность отвязать и / или привязать новых Продавцов к выбранным клиентам
      • Удаление: Администратор и Руководитель могут удалить компанию - компании присваивается дезактивирующий флаг и она убирается из пулла данных, отправляемых сервером
      • Восстановление: Администратор и Руководитель могут восстановить компанию. Для этого реализован специальный селект на странице с клиентами
  • Задачи. При помощи задач Продавцы и Руководители ведут хронологию взаимодействия с клиентом. Особенности задач

    • Разделяются на 4 типа: звонок, расчет, встреча, задача (подразумевается обобщенный тип)
    • Имеют 3 состояния: просрочены, выполнены и в процессе выполнения
    • Задача содержит в себе следующие поля:
      • время старта задачи (обязательное поле)
      • время окончания задачи (обязательное поле)
      • дату (день, месяц, год) (обязательное поле)
      • заголовок (обязательное поле)
      • описание (необязательное поле)
      • вид задачи (обязательное поле)
      • компанию, к которой привязана задача (обязательное поле)
      • селект, который меняет состояние задачи (необязательное поле)
    • Доступные действия с задачами:
      • Создание - доступно всем пользователям
      • Редактирование: пользователи с ролью Продавец могут видеть только те задачи, которые привязаны к непосредственно их клиентам, Администратор и Руководитель видят все задачи, созданные пользователями
    • Основной функционал с темплейтом и различные особенности отображения на разных страницах более подробно описан в блоке с баллами
  • Контакты. Это список контактов сотрудников компаний-клиентов, с которыми пользователи ведут взаимодействие

    • Контакт содержит следующие поля:
      • ФИО
      • e-mail
      • телефон
      • дата рождения
      • после с привязкой к компании (доступно только в момент создания контакта)
    • Контакты доступны только со страницы "Контакты / Contacts".
    • Доступные действия с контактами:
      • Создание: пользователи с ролью Продавец могут создавать контакты и привязывать их только к своим компаниям, Администратор и Руководитель могут создавать любые контакты
      • Редактирование: пользователи с ролью Продавец могут редактировать контакты только у своих компаний, Администратор и Руководитель могут редактировать любые контакты. Отсутствует возможность привязать контакт к другой компании для всех пользователей
      • Удаление: пользователи с ролью Продавец могут удалять контакты только у своих компаний, Администратор и Руководитель могу удалять любые контакты. Контакты удаляются безвозвратно (без возможности восстановления, как у Клиентов)

Buffik and others added 30 commits February 27, 2023 15:14
* feat: add separate logic deepending on user role, creating clients

* feat: hide delete button at clients page, if user role is not admin or manager
* feat: add deleted clients render, add possibility to restore clients

* fix: search over deleted clients

* feat: add render deleted users, add  logic to restore deleted users

* fix: initial state of user role, when open modal to correct user; correct state to check languauge
* refactor: change labels at modal window, add multyline prop to text areat with description of todo

* feat: add spinner while sending and fetching todo data, add legend
* fix: redirecting from calendar page week view to tasks

* fix: redo toLocaleDateString at en-EN locale

* refactor: restore code styling according to ES-lint

* refactor: change resize logic at todos templates

* fix: infinite spinner if there are no contacts or clinets

* refactor: change text
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants